<template>
  <div class="contarner-page" @click.stop="showLanguageHandel">
    <page-header ref="languageRef"></page-header>
    <main>
      <div class="downloader flex_ccenter" v-if="!success">
        <div class="container">
          <div class="hero-widgets flex_between c-fff">
            <div class="tool-item shou flex_center" @click="changeTab(0)">
              <img src="/static/images/video.svg" alt="savinginsta video" />
              <span class="f-16">Video</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(1)">
              <img src="/static/images/Photo.svg" alt="savinginsta photo" />
              <span class="f-16">Photo</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(2)">
              <img src="/static/images/Reels.svg" alt="savinginsta reels" />
              <span class="f-16">Reels</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(3)">
              <img src="/static/images/Story.svg" alt="savinginsta story" />
              <span class="f-16">Story</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(4)">
              <img src="/static/images/Igtv.svg" alt="savinginsta IGTV" />
              <span class="f-16">IGTV</span>
            </div>
          </div>
          <div class="banner-heading flex_ccenter">
            <div class="heading-item" v-show="current == 0">
              <h1 class="title fw700 f-42 c-fff">Instagram-Video-Download</h1>
              <h2 class="sub c-fff f-18 fw400">
                Laden Sie Instagram-Videos, Fotos, Reels, Stories und IGTV
                herunter Inhalte online
              </h2>
            </div>
            <div class="heading-item" v-show="current == 1">
              <nuxt-link to="/de/instagram-photo-download">
                <div @click="goToTop('Photo')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Instagram-Foto-Downloader
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Geben Sie unten die Instagram-FOTO-URL ein
              </p>
            </div>
            <div class="heading-item" v-show="current == 2">
              <nuxt-link to="/de/instagram-reels-video-download">
                <div @click="goToTop('reels')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Laden Sie Instagram Reels herunter
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Geben Sie unten die Instagram Reels-URL ein
              </p>
            </div>
            <div class="heading-item" v-show="current == 3">
              <nuxt-link to="/de/instagram-story-download">
                <div @click="goToTop('story')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Instagram-Story-Download
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Geben Sie unten die URL der Instagram Stories ein
              </p>
            </div>
            <div class="heading-item" v-show="current == 4">
              <nuxt-link to="/de/igtv-downloader">
                <div @click="goToTop('igtv')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Laden Sie das IGTV-Video herunter
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Geben Sie unten die Instagram IGTV-URL ein
              </p>
            </div>
          </div>
          <div class="form flex_center">
            <div class="input-box flex_between">
              <!-- <input
                type="text"
                class="input f-18"
                v-model="input"
                @input="handleInput"
                @paste="handleInput"
                placeholder="Paste URL Instagram"
                list="fruits"
                name="fruit"
              />
              <datalist id="fruits">
                <option value="Apple"></option>
                <option value="Banana"></option>
                <option value="Cherry"></option>
              </datalist> -->
              <input
                type="text"
                class="input f-18"
                v-model="input"
                :disabled="isHttpLoading"
                @input="handleInput"
                @paste="handleInput"
                @keydown="sendDownload($event)"
                placeholder="Paste URL Instagram"
              />
              <div
                class="Paste shou flex_center"
                @click="handleClickPasted"
                v-if="input == ''"
              >
                <div class="btnbg"></div>
                <div class="f-16 c-000 fw700">Paste</div>
              </div>
              <div
                class="clear shou flex_center"
                v-if="input != '' && !isHttpLoading"
                @click.stop="input = ''"
              >
                <div class="btnbg"></div>
                <div class="f-16 c-000 fw700">Clear</div>
              </div>
            </div>
            <div
              v-if="!isHttpLoading"
              @click.stop="downloadHandel"
              class="submit shou fw700 c-fff flex_center"
            >
              Download
            </div>
            <div v-else class="submit shou fw700 c-fff flex_center">
              Please wait
            </div>
          </div>
          <div class="app-submit flex_ccenter">
            <div
              class="submit flex_center"
              v-if="!isHttpLoading"
              @click.stop="downloadHandel"
            >
              <div class="fw700 c-fff f-21">Download</div>
            </div>
            <div class="submit flex_center" v-else>
              <div class="fw700 c-fff f-21">Please wait</div>
            </div>
          </div>
          <div class="loading" v-if="isHttpLoading">
            <div class="loading-dots flex_center">
              <div class="dot"></div>
              <div class="dot"></div>
              <div class="dot"></div>
              <div class="dot"></div>
            </div>
            <div class="tips f-18 flex_center">
              <div>
                Daten werden abgerufen, bitte warten Sie ein paar Sekunden!
              </div>
            </div>
          </div>
          <div class="error flex_ccenter" v-if="httpError1">
            <div class="hono flex_">
              <div class="error-img"></div>
              <div class="error-img"></div>
              <div class="error-img"></div>
            </div>
            <div class="errMsg f-18">
              Die Website kann Ihren Link nicht verarbeiten, da er privat ist
            </div>
          </div>
          <div class="error flex_ccenter" v-if="httpError2">
            <div class="hono flex_">
              <div class="error-img"></div>
              <div class="error-img"></div>
              <div class="error-img"></div>
            </div>
            <div class="errMsg f-18">
              Bei den von Ihnen eingegebenen Daten handelt es sich nicht um
              einen Link. Bitte geben Sie einen gültigen Link ein, z Beispiel:
              <div>https://www.instagram.com/reel/Cml9qu-ISqx</div>
            </div>
          </div>
        </div>
      </div>
      <!-- 广告位start -->
      <!-- 广告位end -->
      <div class="container" v-if="!success">
        <div class="body-content">
          <div class="title-box">
            <h3 class="title f-36 c-000 italic">
              Alle Funktionen von Savinginsta.Com
            </h3>
            <p class="sub f-16 c-ccc">
              Savinginsta ist mit allen Arten von Instagram-Videos kompatibel
              und Bildlinks.
            </p>
          </div>
          <div class="list-tools-pc">
            <div class="tool-box flex_between">
              <div class="tool-info">
                <nuxt-link to="/de">
                  <div @click="goToTop('video')" class="tItem">
                    <h4>Instagram-Video-Downloader</h4>
                  </div>
                </nuxt-link>
                <p>
                  Savinginsta ist so konzipiert, dass Sie Ihr eigenes
                  herunterladen können Inhalte von Instagram. Es bietet
                  Unterstützung für das Herunterladen beider einzelne und
                  mehrere Videos von Insta.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  src="/static/images/instagram-video-downloader.webp"
                  alt="Instagram video downloader"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  src="/static/images/instagram-video-downloader-app.webp"
                  alt="Instagram video downloader"
                />
              </div>
            </div>
            <div class="tool-box tool-reverse flex_between">
              <div class="tool-info">
                <nuxt-link to="/de/instagram-photo-download">
                  <div @click="goToTop('Photo')" class="tItem">
                    <h4>Instagram-Foto-Downloader</h4>
                  </div>
                </nuxt-link>
                <p>
                  Der Instagram Photo Downloader von Savinginsta macht es
                  mühelos zum Speichern einzelner oder mehrerer Fotos,
                  einschließlich Collagen, von Instagram. Mit diesem Tool können
                  Sie einzelne Beiträge herunterladen Bilder oder eine Sammlung
                  von Instagram-Fotos ist einfach und einfach.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/instagram-photo-downloader.webp"
                  alt="Instagram photo downloader"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/instagram-photo-downloader-app.webp"
                  alt="Instagram photo downloader"
                />
              </div>
            </div>
            <div class="tool-box flex_between">
              <div class="tool-info">
                <nuxt-link to="/de/instagram-reels-video-download">
                  <div @click="goToTop('reels')" class="tItem">
                    <h4>Laden Sie Instagram Reels herunter</h4>
                  </div>
                </nuxt-link>
                <p>
                  Der Instagram Reels Downloader von Savinginsta ermöglicht es
                  Ihnen Laden Sie Reels-Videos mühelos von Instagram-Posts
                  herunter Ihr Gerät und bietet eine einfache Lösung für
                  Instagram selbst bietet keine Unterstützung für diese
                  Funktion.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/download-instagram-reels.webp"
                  alt="Download Instagram Reels"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/download-instagram-reels-app.webp"
                  alt="Download Instagram Reels"
                />
              </div>
            </div>
            <div class="tool-box tool-reverse flex_between">
              <div class="tool-info">
                <nuxt-link to="/de/igtv-downloader">
                  <div @click="goToTop('igtv')" class="tItem">
                    <h4>IGTV-Downloader</h4>
                  </div>
                </nuxt-link>
                <p>
                  Instagram-Storys bieten den Nutzern eine einzigartige
                  Plattform Teilen Sie ihre täglichen Erfahrungen durch Fotos
                  und Videos mit a breites Publikum. Gelegentlich möchten Sie
                  vielleicht einen Favoriten speichern Story, aber diese
                  Funktionalität ist in der App nicht verfügbar. Savinginsta
                  geht dieses Problem an, indem es eine Lösung bereitstellt
                  ermöglicht Benutzern das einfache Herunterladen und Anzeigen
                  von Instagram-Geschichten offline, um sicherzustellen, dass
                  unvergessliche Inhalte nie verloren gehen.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/igtv-downloader.webp"
                  alt="IGTV downloader"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/igtv-downloader-app.webp"
                  alt="IGTV downloader"
                />
              </div>
            </div>
            <div class="tool-box flex_between">
              <div class="tool-info">
                <nuxt-link to="/de/instagram-story-download">
                  <div @click="goToTop('story')" class="tItem">
                    <h4>Instagram Story Viewer</h4>
                  </div>
                </nuxt-link>
                <p>
                  IGTV bietet Videos in längerer Länge an, falls Sie dazu nicht
                  in der Lage sind Sehen Sie sich diese sofort an, Sie haben die
                  Möglichkeit, sie herunterzuladen IGTV-Videos auf Ihren PC.
                  Dies ermöglicht Ihnen eine bequeme Besuchen Sie sie noch
                  einmal und genießen Sie sie später, auch ohne Internet
                  Verbindung und beseitigt Bedenken hinsichtlich des
                  IGTV-Inhalts entfernt wird oder nicht verfügbar ist.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/instagram-story-download.webp"
                  alt="Instagram Story Download"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/instagram-story-download-app.webp"
                  alt="Instagram Story Download"
                />
              </div>
            </div>
          </div>
          <div class="app-box">
            <div class="app-box__info">
              <h3 class="app-box__title f-21 fw700 c-000">
                Mit der App Insta Downloader herunterladen
              </h3>
              <p class="f-16 c-ccc">
                Unsere App bietet eine schnelle und einfache Lösung zum
                Herunterladen Instagram-Videos, Bereitstellung von Videos in
                HD-Qualität ohne Wasserzeichen.
              </p>
            </div>
            <div class="app-link">
              <a 
                  target="_blank" href="https://play.google.com/store/apps/details?id=ins.freevideodownload.pro">
                <img src="/static/images/google-play.webp" alt="Download app " />
              </a>
              <a href="https://apps.apple.com/us/app/repost-for-video-save-story/id6462401460"  target="_blank">
                <img src="/static/images/IOS.webp" alt="Download app " />
              </a>
            </div>
          </div>
          <div class="quick-info">
            <h3 class="f-32 c-000">
              SAVINGINSTA – BESTES INSTAGRAM-DOWNLOADER-TOOL
            </h3>
            <p class="f-16 c-ccc">
              Savinginsta zeichnet sich als erstklassiger Instagram-Downloader
              aus. Fachmännisch erstellt, um schnell hochwertige Inhalte
              herunterzuladen Instagram. Bei der Suche nach der effektivsten
              Methode zum Herunterladen In den Instagram-Medien erweist sich der
              Savinginsta-Downloader als führend Lösung eines Drittanbieters.
            </p>
            <p class="f-16 c-ccc">
              Instagram, bekannt als die weltweit beliebteste Foto-Sharing-App,
              wird täglich Zeuge des Hochladens von Millionen von Fotos. Für
              solch Momente, die Notwendigkeit eines Instagram-Video-Downloaders
              wird offensichtlich und bietet eine nahtlose Lösung für Ihre
              unmittelbaren Bedürfnisse. Dieses Werkzeug ist unverzichtbar für
              jeden, der sein Eigentum bewahren möchte
              Lieblings-Instagram-Inhalte effizient.
            </p>
          </div>
          <div class="features c-fff">
            <h3 class="h3 fw700 f-21">
              Funktionen des Savinginsta Instagram Video Downloaders:
            </h3>
            <div class="attributes-list flex_between">
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Laden Sie Instagram-Videos schnell, einfach und sicher
                  herunter.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Sie können sich von Ihrem Instagram-Konto abmelden.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Mit nur einem Klick können Sie Instagram-Bilder herunterladen
                  und Videos.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Laden Sie Bilder und Videos in ihrer Originalhöhe herunter und
                  speichern Sie sie Definition und Qualität.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Laden Sie Instagram-Videos von persönlichen Konten herunter
                  und speichern Sie sie.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Hohe Geschwindigkeit: Savinginsta bietet derzeit die
                  schnellste Lösung Download-Geschwindigkeiten.
                </div>
              </div>
            </div>
          </div>
          <div class="how">
            <div class="how-title">
              <h3 class="f-36 c-000 italic">
                So verwenden Sie den Savinginsta Instagram Downloader zum
                Speichern von IG
              </h3>
              <div class="note c-ccc f-16">
                Hinweis: Stellen Sie sicher, dass das gewünschte Instagram-Video
                oder -Foto vorhanden ist Der Download erfolgt von einem
                öffentlichen Konto.
              </div>
            </div>
            <div class="steps">
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Schritt01:</span>
                  <span class="f-16 c-000"
                    >Kopieren Sie die URL von Instagram-Fotos und -Videos</span
                  >
                </div>
                <div class="app-step">
                  <div class="fw700 c-000 f-16">Auf der Instagram-App:</div>
                  <div class="c-000 f-16">
                    Für iOS: Tippen Sie hier, um die Instagram-Foto-URL
                    abzurufen.
                  </div>
                  <div class="c-000 f-16">
                    Für Android: Klicken Sie über dem Beitrag und wählen Sie
                    „Kopieren“. Instagram-URL“ und klicken Sie dann auf
                    „Freigabe-URL kopieren“. Der Link wird sein in Ihre
                    Zwischenablage kopiert.
                  </div>
                  <div class="fw700 c-000 f-16">- Auf PC/Mac:</div>
                  <div class="c-000 f-16">
                    Klicken Sie mit der rechten Maustaste auf das Datum des
                    Instagram-Videos oder -Fotos und Wählen Sie „Linkadresse
                    kopieren“, um Instagram-Inhalte herunterzuladen Ihrem
                    Desktop.
                  </div>
                </div>
              </div>
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Schritt02:</span>
                  <span class="f-16 c-000">
                    Fügen Sie die URL in Savinginsta.App ein</span
                  >
                </div>
                <div class="app-step">
                  <div class="c-000 f-16">
                    Navigieren Sie zur Savinginsta.App – dem speziellen
                    Instagram Downloader.
                  </div>
                  <div class="c-000 f-16">
                    Kopieren Sie die kopierte URL und fügen Sie sie in das
                    angegebene Textfeld ein.
                  </div>
                </div>
              </div>
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Schritt03:</span>
                  <span class="f-16 c-000">Starten Sie den Download</span>
                </div>
                <div class="app-step">
                  <div class="c-000 f-16">
                    Klicken Sie auf die Schaltfläche „Herunterladen“, um das
                    Instagram-Video zu starten oder Foto-Download-Prozess.
                  </div>
                  <div class="fw700 c-000 f-16">
                    Wichtige Nutzungsinformationen
                  </div>
                  <div class="c-000 f-16">
                    Savinginsta ist in erster Linie für das Herunterladen von
                    Videos und Videos konzipiert Bilder von Ihrem eigenen
                    Instagram-Konto.
                  </div>
                  <div class="c-000 f-16">
                    Wir legen großen Wert auf die Privatsphäre der Benutzer und
                    behalten uns das Recht vor, dies abzulehnen Service, wenn
                    unsere Werkzeuge dazu verwendet werden, die Rechte anderer
                    zu verletzen Privatsphäre zu verletzen oder auf nicht
                    autorisiertes Material zuzugreifen.
                  </div>
                </div>
              </div>
            </div>
            <div class="user-note f-16">
              <div class="app-tip"></div>
              Für ein umfassendes Verständnis unserer Richtlinien

              <a class="fw700 c-blue" href="/terms-of-service">
                Bitte lesen Sie hier unsere vollständigen Nutzungsbedingungen.</a
              >
            </div>
          </div>
          <div class="faq-section">
            <h3 class="faq-title f-36 c-000 italic">FAQ</h3>
            <div class="accordion">
              <div
                id="faq"
                itemscope="itemscope"
                itemtype="https://schema.org/FAQPage"
              >
                <div
                  itemprop="mainEntity"
                  itemscope="itemscope"
                  itemtype="https://schema.org/Question"
                  class="accordion-item"
                  :key="k"
                  v-for="(item, k) in faqList"
                >
                  <h4 itemprop="name" class="accordion-title fw700 f-16">
                    {{ item.title }}
                  </h4>
                  <div
                    itemprop="acceptedAnswer"
                    itemscope=""
                    itemtype="https://schema.org/Answer"
                  >
                    <div
                      itemprop="text"
                      class="accordion-text f-16 c-ccc fw400"
                    >
                      {{ item.content }}
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <!-- 解析结果 start -->
      <div class="container" v-if="success">
        <success-content
          @refresh="refresh"
          :list="successList"
        ></success-content>
      </div>
      <!-- 解析结果 end -->
    </main>
    <footer>
      <div class="container">
        <div class="footer-content">
          <div class="footer-link">
            <div class="row flex_between">
              <div class="col-12">
                <div class="link-label fw700 c-000 f-21">Werkzeuge</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li @click="goToTools('story')">
                    <nuxt-link to="/de/instagram-story-download"
                      >Instagram-Story-Downloader</nuxt-link
                    >
                  </li>
                  <li @click="goToTools('reels')">
                    <nuxt-link to="/de/instagram-reels-video-download"
                      >Instagram-Reels-Downloader</nuxt-link
                    >
                  </li>
                  <li>
                    <a href="https://savingtik.com/" target="_blank"
                      >Tiktok-Downloader</a
                    >
                  </li>
                </ul>
              </div>
              <div class="col-6">
                <div class="link-label fw700 c-000 f-21">Unterstützung</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/contact"> Kontakt </nuxt-link>
                  </li>
                  <li>
                    <nuxt-link to="/blog"> Blog </nuxt-link>
                  </li>
                </ul>
              </div>
              <div class="col-6">
                <div class="link-label fw700 c-000 f-21">Legal</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/terms-of-service">
                      Nutzungsbedingungen
                    </nuxt-link>
                  </li>
                  <li>
                    <nuxt-link to="/privacy-policy"> Datenschutzrichtlinie </nuxt-link>
                  </li>
                </ul>
              </div>
            </div>
          </div>
          <div class="copyright flex_ccenter">
            <b class="fw700 f-21 c-000"
              >Wir sind nicht mit Instagram oder Meta verbunden</b
            >
            <div class="c-ccc f-16">
              © {{new Date().getFullYear()}} Insta Downloader All rights reserved.
            </div>
          </div>
        </div>
      </div>
    </footer>
  </div>
</template>

<script>
import { mapState, mapGetters, mapMutations } from "vuex";
import pageHeader from "~/components/page-header.vue";
import SuccessContent from "~/components/success-content.vue";
import CryptoJS from "crypto-js";
import { handleClick, checkString } from "@/plugins/Firebase.js";

export default {
  components: { pageHeader, SuccessContent },
  name: "IndexPage",
  head: {
    htmlAttrs: {
      lang: "de",
    },
    bodyAttrs: {
      "data-lang": "de",
    },
    title:
      "Instagram Downloader – Laden Sie Instagram-Videos online herunter – Savinginsta",
    meta: [
      { property: "og:locale", content: "de" },
      //Page Information
      {
        name: "description",
        content:
          "Savinginsta: Laden Sie mit unserem benutzerfreundlichen Tool ganz einfach Instagram-Videos, Reels und Fotos herunter. Speichern Sie Ihre Instagram-Videos schnell und sicher auf jedem Gerät.",
      },
      //Schema.org Microdata
      {
        itemprop: "name",
        content:
          "Instagram Downloader – Laden Sie Instagram-Videos online herunter – Savinginsta",
      },

      // Facebook / OpenGraph
      {
        property: "og:title",
        content:
          "Instagram Downloader – Laden Sie Instagram-Videos online herunter – Savinginsta",
      },
      { property: "og:type", content: "website" },
      { property: "og:url", content: "https://savinginsta.com/de" },

      {
        property: "og:description",
        content:
          "Savinginsta: Laden Sie mit unserem benutzerfreundlichen Tool ganz einfach Instagram-Videos, Reels und Fotos herunter. Speichern Sie Ihre Instagram-Videos schnell und sicher auf jedem Gerät.",
      },
      //Twitter
      { name: "twitter:card", content: "summary" },
      { name: "twitter:url", content: "https://savinginsta.com/de" },
      {
        name: "twitter:title",
        content:
          "Instagram Downloader – Laden Sie Instagram-Videos online herunter – Savinginsta",
      },
      {
        name: "twitter:description",
        content:
          "Savinginsta: Laden Sie mit unserem benutzerfreundlichen Tool ganz einfach Instagram-Videos, Reels und Fotos herunter. Speichern Sie Ihre Instagram-Videos schnell und sicher auf jedem Gerät.",
      },
      //multilingual
      {
        name: "google",
        content: "notranslate",
      },
      {
        itemprop: "image",
        content: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg",
      },
      {
        property: "og:image",
        content: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg",
      },
      {
        name: "twitter:image",
        content: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg",
      },
    ],
    link: [
      //multilingual
      {
        rel: "alternate",
        hreflang: "x-default",
        href: "https://savinginsta.com/de",
      },
      {
        rel: "alternate",
        hreflang: "en",
        href: "https://savinginsta.com/",
      },
      {
        rel: "alternate",
        hreflang: "en-in",
        href: "https://savinginsta.com/in",
      },
      {
        rel: "alternate",
        hreflang: "vi",
        href: "https://savinginsta.com/vn",
      },
      {
        rel: "alternate",
        hreflang: "tr",
        href: "https://savinginsta.com/tr",
      },
      {
        rel: "alternate",
        hreflang: "id",
        href: "https://savinginsta.com/id",
      },
      {
        rel: "alternate",
        hreflang: "fr",
        href: "https://savinginsta.com/fr",
      },
      {
        rel: "alternate",
        hreflang: "pt",
        href: "https://savinginsta.com/pt",
      },
      {
        rel: "alternate",
        hreflang: "ru",
        href: "https://savinginsta.com/ru",
      },
      {
        rel: "alternate",
        hreflang: "es",
        href: "https://savinginsta.com/es",
      },
      {
        rel: "alternate",
        hreflang: "ms",
        href: "https://savinginsta.com/ms",
      },
      {
        rel: "alternate",
        hreflang: "ko",
        href: "https://savinginsta.com/ko",
      },
      {
        rel: "alternate",
        hreflang: "ja",
        href: "https://savinginsta.com/ja",
      },
      {
        rel: "alternate",
        hreflang: "jv",
        href: "https://savinginsta.com/jv",
      },
      {
        rel: "alternate",
        hreflang: "cs",
        href: "https://savinginsta.com/cs",
      },
      {
        rel: "alternate",
        hreflang: "de",
        href: "https://savinginsta.com/de",
      },
      {
        rel: "alternate",
        hreflang: "it",
        href: "https://savinginsta.com/it",
      },
      {
        rel: "alternate",
        hreflang: "pl",
        href: "https://savinginsta.com/pl",
      },
      {
        rel: "alternate",
        hreflang: "hu",
        href: "https://savinginsta.com/hu",
      },
      {
        rel: "alternate",
        hreflang: "nl",
        href: "https://savinginsta.com/nl",
      },
      {
        rel: "alternate",
        hreflang: "ro",
        href: "https://savinginsta.com/ro",
      },
      {
        rel: "alternate",
        hreflang: "el",
        href: "https://savinginsta.com/el",
      },
      {
        rel: "canonical",
        href: "https://savinginsta.com/de",
      },
    ],
    script: [
      {
        json: {
          "@context": "https://schema.org",
          "@type": "WebSite",
          name: "Instagram Downloader – Laden Sie Instagram-Videos online herunter – Savinginsta",
          url: "https://savinginsta.com",
          description:
            "Savinginsta: Laden Sie mit unserem benutzerfreundlichen Tool ganz einfach Instagram-Videos, Reels und Fotos herunter. Speichern Sie Ihre Instagram-Videos schnell und sicher auf jedem Gerät.",
          publisher: {
            "@type": "Organization",
            name: "Savinginsta",
            logo: {
              "@type": "ImageObject",
              url: "https://savinginsta.com/static/images/logo.webp",
            },
          },
        },
        type: "application/ld+json",
      },
    ],
  },
  data() {
    return {
      input: "",
      success: false,
      isHttpLoading: false,
      httpError1: false,
      httpError2: false,
      current: 0,
      successList: [],
      faqList: [
        {
          title: `Was ist ein Instagram-Video-Downloader?`,
          content: `Ein Instagram Video Downloader ist ein webbasiertes Tool zum Speichern von Instagram-Fotos, -Videos und IGTV-Inhalten für die spätere Verwendung. Savinginsta ist die erste Wahl für das mühelose Herunterladen von Inhalten von Instagram.`,
        },
        {
          title: `Ist die Anmeldung bei meinem Instagram-Konto erforderlich, um Savinginsta nutzen zu können?`,
          content: `Nein, Sie müssen sich nicht bei Ihrem Instagram-Konto anmelden. Savinginsta gewährleistet sichere und anonyme Downloads von Instagram, ohne dass persönliche Daten erforderlich sind.`,
        },
        {
          title: `Kann ich Videos direkt von Instagram speichern?`,
          content: `Das direkte Herunterladen von Videos aus Ihrem Instagram-Feed oder den Geschichten anderer ist über Instagram selbst nicht möglich. Savinginsta bietet jedoch eine einfache Lösung. Besuchen Sie einfach ihre Website unter https:// savinginsta.com und befolgen Sie die einfachen Anweisungen.`,
        },
        {
          title: `Ist der Instagram-Video- und Foto-Download-Service kostenlos?`,
          content: `Ja, Savinginsta bietet diesen Service völlig kostenlos an, ohne Einschränkungen hinsichtlich der Anzahl der Downloads.`,
        },
        {
          title: `Kann ich Inhalte von privaten Instagram-Konten herunterladen?`,
          content: `Tatsächlich ermöglicht Ihnen Savinginsta das Herunterladen von Videos, Geschichten und Fotos von privaten Instagram-Konten. Detaillierte Anweisungen finden Sie auf ihrer Plattform.`,
        },
        {
          title: `Ist es möglich, Instagram-Geschichten zu speichern?`,
          content: `Absolut. Mit Savinginsta können Sie jede Instagram-Story ansehen und herunterladen. Klicken Sie einfach auf die drei Punkte (⁝) in der Story, kopieren Sie den Link und fügen Sie ihn in Savinginsta ein, um den Download zu starten.`,
        },
        {
          title: `Unterstützt Savinginsta Downloads auf Computern?`,
          content: `Ja, Savinginsta ist vollständig mit PCs kompatibel, sodass Sie Instagram-Videos, Fotos, Geschichten und mehr direkt auf Ihren Computer herunterladen können.`,
        },
        {
          title: `Kann ich Savinginsta zum Herunterladen von Instagram auf Android-Geräten verwenden?`,
          content: `Sicherlich. Für Android-Benutzer kopieren Sie einfach den Instagram-Post-Link, fügen Sie ihn in Savinginsta ein und speichern Sie ihn. Weitere Informationen finden Sie in der Anleitung zum Herunterladen von Instagram auf Android.`,
        },
        {
          title: `Wie kann ich Instagram-Videos und -Fotos auf iPhone/iPad (iOS) herunterladen?`,
          content: `Savinginsta hat eine benutzerfreundliche Schritt-für-Schritt-Anleitung zum Herunterladen verschiedener Arten von Videos auf Ihr iPhone oder iPad erstellt. Folgen Sie diesem Link für Anweisungen: Laden Sie Instagram-Videos auf das iPhone herunter.`,
        },
        {
          title: `Was passiert, wenn das Instagram-Video abgespielt wird, anstatt es herunterzuladen?`,
          content: `Um dieses Problem zu beheben, klicken Sie mit der rechten Maustaste auf das Video und wählen Sie „Speichern unter...“, um den gewünschten Speicherort auszuwählen, anstatt mit der linken Maustaste zu klicken.`,
        },
        {
          title: `Wo werden Videos nach dem Herunterladen gespeichert?`,
          content: `Heruntergeladene Videos werden normalerweise sowohl auf Android-Mobilgeräten als auch auf PCs im Ordner „Downloads“ gespeichert.`,
        },
      ],
    };
  },
  computed: {
    ...mapGetters(["language"]),
  },
  mounted() {
    this.debouncedDownInput = this.debounce(this.downInput, 1000);

    //到达首页
    handleClick("guide_homepage_frist", {});
    handleClick("guide_homepage", {});
  },
  methods: {
    async downloadHandel() {
      if (this.isHttpLoading || this.input === "") return;
      this.isHttpLoading = false;
      this.httpError1 = false;
      this.httpError2 = false;
      this.input = this.input.replace(/^.*\s?https:\/\//, "https://");
      const insUrlPattern = new RegExp("^http(s|)://.*instagram.com.*/.*$");
      let type = checkString(this.input);
      if (!insUrlPattern.test(this.input)) {
        //点击解析下载按钮
        handleClick("action_ins_detect_boinsom", {
          site: "other",
          noislink: this.input,
          from: "video",
          type: type,
        });
        this.httpError2 = true;
        this.isHttpLoading = false;
        return;
      }
      //点击解析下载按钮
      handleClick("action_ins_detect_boinsom", {
        site: "other",
        from: "video",
        type: type,
      });
      //开始解析  ins_start_resolve
      handleClick("ins_start_resolve", {
        islink: this.input,
        from: "video",
        type: type,
      });
      this.isHttpLoading = true;
      try {
        let result = this.uki(this.input);
        const response = await fetch(
          "https://savinginsta.com/api/downloader/analysis",
          {
            method: "POST",
            headers: { "Content-Type": "application/json" },
            body: JSON.stringify({
              path: result,
            }),
          }
        );
        let encryptedResponse = await response.text();
        let parse = JSON.parse(encryptedResponse);
        if (parse.code != 200) {
          // 解析失败  ins_resolve_fail
          handleClick("ins_resolve_fail", {
            reason: "Failed to fetch",
            islink: this.input,
            from: "video",
            type: type,
          });
          this.httpError1 = true;
          this.isHttpLoading = false;
          return;
        } else {
          //解析成功  ins_resolve_success
          handleClick("ins_resolve_success", {
            type: type,
            from: "video",
          });
          let decryptedResponse = await this.eki(parse.data); // 使用你的解密函数
          this.successList = JSON.parse(decryptedResponse);
          this.success = true;
          this.isHttpLoading = false;
        }
      } catch (error) {
        // 解析失败  ins_resolve_fail
        handleClick("ins_resolve_fail", {
          reason: "Failed to fetch",
          islink: this.input,
          from: "video",
          type: type,
        });
        console.error(error);
        this.httpError1 = true;
        this.isHttpLoading = false;
      }
    },

    uki(input) {
      let CIPHER_ALGORITHM = "DES-CBC";
      let IV_SIZE = 8;
       
      
  try {
        const complexKey = [
          process.env.part1,
          process.env.part2,
          process.env.part3,
          process.env.part4,
          process.env.part5,
          process.env.part6,
          process.env.part7,
          process.env.part8,
        ].join("");
        const keyBytes = CryptoJS.enc.Utf8.parse(complexKey);
        const inputBytes = CryptoJS.enc.Utf8.parse(input);
        const ivBytes = CryptoJS.lib.WordArray.random(IV_SIZE);
        const encrypted = CryptoJS.DES.encrypt(inputBytes, keyBytes, {
          iv: ivBytes,
          mode: CryptoJS.mode.CBC,
          padding: CryptoJS.pad.Pkcs7,
        });
        const ciphertext = ivBytes.concat(encrypted.ciphertext);
        return ciphertext.toString();
      } catch (error) {
        console.error(error);
        return null;
      }
    },
    eki(cipherText) {
      let CIPHER_ALGORITHM = "DES-CBC";
      let IV_SIZE = 8;
       
      const complexKey = [
          process.env.part1,
          process.env.part2,
          process.env.part3,
          process.env.part4,
          process.env.part5,
          process.env.part6,
          process.env.part7,
          process.env.part8,
        ].join("");
      try {
        let keyBytes = CryptoJS.enc.Utf8.parse(
          complexKey.padEnd(CIPHER_ALGORITHM === "DES-CBC" ? 8 : 16)
        );
        let ivBytes = { iv: CryptoJS.enc.Hex.parse(process.env.DES_IV) }; // 如果使用CBC模式，需要一个初始化向量iv，这里是空向量
        let decrypted = CryptoJS.DES.decrypt(
          { ciphertext: CryptoJS.enc.Hex.parse(cipherText) },
          keyBytes,
          ivBytes
        );
        return decrypted.toString(CryptoJS.enc.Utf8);
      } catch (e) {
        console.error(e);
        return null;
      }
    },
    sendDownload(event) {
      if (event.keyCode === 13 && !this.isHttpLoading) {
        this.downloadHandel();
        event.preventDefault();
        return false;
      }
    },
    changeTab(k) {
      this.current = k;
    },
    handleInput(e) {
      this.debouncedDownInput(e);
    },
    debounce(fn, delay) {
      let timer;
      return function () {
        let context = this;
        let args = arguments;
        clearTimeout(timer);
        timer = setTimeout(() => {
          fn.apply(context, args);
        }, delay);
      };
    },

    downInput(e) {
      let type = checkString(e.target.value);
      // 粘贴链接到输入框 action_ins_paste
      handleClick("action_ins_paste", {
        islink: e.target.value,
        from: "photo",
        type: type,
      });
    },
    handleClickPasted() {
      if (!navigator.clipboard) {
        console.log("Clipboard API not available");
        return;
      }
      navigator.clipboard
        .readText()
        .then((text) => {
          this.input = text;
          let type = checkString(text);
          // 粘贴链接到输入框 action_ins_paste
          handleClick("action_ins_paste", {
            islink: text,
            from: "photo",
            type: type,
          });
        })
        .catch((err) => {
          console.error("Failed to read clipboard contents: ", err);
        });
    },
    showLanguageHandel() {
      this.$refs.languageRef.close();
    },
    refresh() {
      this.success = false;
      this.input = "";
      this.successList = [];
    },
    goToTop(site) {
      //切换页面
      handleClick("action_page_switch", {
        site: site,
        from: top,
      });
    },
    goToTools(site) {
      //切换页面
      handleClick("action_page_switch", {
        site: site,
        from: tools,
      });
    },
  },
};
</script>
<style lang="scss" scoped>
@import "@/static/style/index.css";
.loading {
  .loading-dots {
    position: relative;
    z-index: 999;
    margin-top: 70px;
  }

  .dot {
    background-color: #ffffff;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    margin: 0 10px;
    animation: loading-animation 1.5s infinite;
  }

  .dot:nth-child(2) {
    animation-delay: 0.5s;
  }

  .dot:nth-child(3) {
    animation-delay: 0.8s;
  }
  .dot:nth-child(4) {
    animation-delay: 1s;
  }
}
@keyframes loading-animation {
  0%,
  50%,
  80%,
  100% {
    transform: scale(1);
  }
  40% {
    transform: scale(1.5);
  }
}
@media (max-width: 768px) {
  .loading {
    .loading-dots {
      margin-top: 26px !important;
    }
    .dot {
      width: 8px !important;
      height: 8px !important;
    }
  }
}
</style>
